#ifndef CLASSOBFUSCATOR_H
#define CLASSOBFUSCATOR_H

#include <QString>
#include <QStringList>
#include <QMap>
#include <QRegularExpression>

class WhitelistManager;

class ClassObfuscator {
public:
    ClassObfuscator();
    ~ClassObfuscator();
    
    // 生成类名混淆映射
    QMap<QString, QString> generateMappings(const QStringList &files, WhitelistManager *whitelist);
    
    // 设置混淆参数
    void setPrefix(const QString &prefix) { m_prefix = prefix; }
    void setSuffix(const QString &suffix) { m_suffix = suffix; }
    void setMinLength(int length) { m_minLength = length; }
    void setMaxLength(int length) { m_maxLength = length; }
    
private:
    QString m_prefix;
    QString m_suffix;
    int m_minLength = 6;
    int m_maxLength = 12;
    
    // 从文件中提取类名
    QStringList extractClassNames(const QString &filePath);
    
    // 生成混淆后的类名
    QString generateObfuscatedName(const QString &originalName);
    
    // 检查是否应该混淆该类
    bool shouldObfuscate(const QString &className, WhitelistManager *whitelist);
    
    // 正则表达式
    QRegularExpression m_objcInterfaceRegex;
    QRegularExpression m_objcImplementationRegex;
    QRegularExpression m_swiftClassRegex;
};

#endif // CLASSOBFUSCATOR_H